﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.IO;
using System.Data;

namespace Data
{
    public static class DataBaseHelper
    {
        public static SQLiteConnection GetConnection(string DataBaseName)
        {
            //Get the Path of the personal folder
            var documents = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            //var documents = "C:\\";
            
            //Create a Formated Path
            string db = Path.Combine(documents, DataBaseName);

            //Check if existe the DateBase
            bool exists = File.Exists(db);

            //If DB does not exist, create the DB file., 
            if(!exists)
                    SQLiteConnection.CreateFile(db);

            //Create th ADO.NET connection Object
            var conn = new SQLiteConnection("Data Source=" + db);

            //if Db does not exist, create the tables.
            if (!exists)
            {
                var commands = new[]
                {
                    @"CREATE TABLE clientes (
                    numeroDocumento INTEGER PRIMARY KEY  NOT NULL ,
                    nombre VARCHAR,
                    apellido VARCHAR,
                    email VARCHAR,
                    telefono VARCHAR,
                    celular VARCHAR,
                    notas VARCHAR,
                    tipoDocumento VARCHAR,
                    sexo VARCHAR,
                    profesion VARCHAR,
                    pais VARCHAR,
                    ciudad VARCHAR,
                    fecNac VARCHAR
                    )",
                    @"CREATE TABLE consumo (
                    idconsumo INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , 
                    nhabitacion VARCHAR, 
                    idproducto VARCHAR, 
                    fecha DATETIME, 
                    cantidad VARCHAR, 
                    activo VARCHAR
                    )",
                    @"CREATE TABLE cuentasPersonal (
                    numeroDocumento INTEGER PRIMARY KEY  NOT NULL , 
                    usuario VARCHAR NOT NULL , 
                    password VARCHAR NOT NULL , 
                    tipoCuenta VARCHAR NOT NULL , 
                    activo VARCHAR NOT NULL 
                    )",
                    @"CREATE TABLE datosPersonal (
                    numeroDocumento INTEGER PRIMARY KEY  NOT NULL ,
                    nombre VARCHAR NOT NULL ,
                    apellido VARCHAR NOT NULL ,
                    paisNacimiento VARCHAR,
                    profesion VARCHAR,
                    fechaNacimiento VARCHAR,
                    email VARCHAR,
                    telefono VARCHAR,
                    celular VARCHAR,
                    notas VARCHAR, 
                    sexo VARCHAR
                    )",
                    @"CREATE TABLE frigobar (
                    idfrigobar INTEGER PRIMARY KEY  NOT NULL ,
                    descripcion VARCHAR
                    )",
                    @"CREATE TABLE habitacion (
                    numero VARCHAR PRIMARY KEY  NOT NULL , 
                    tipo VARCHAR, 
                    capacidad VARCHAR, 
                    state VARCHAR
                    )",
                    @"CREATE TABLE hospedajes (
                    numeroHabitacion NUMERIC NOT NULL ,
                    fechaLlegada VARCHAR NOT NULL ,
                    numeroDocumento INTEGER NOT NULL ,
                    fechaSalida VARCHAR,
                    activo VARCHAR,
                    fechaRegistro VARCHAR, 
                    PRIMARY KEY (numeroHabitacion,fechaLlegada,numeroDocumento
                    ))",
                    @"CREATE TABLE hospedajesExitosos (
                    numeroHabitacion NUMERIC NOT NULL , 
                    fechaLlegada VARCHAR NOT NULL , 
                    numeroDocumento INTEGER NOT NULL , 
                    fechaSalida VARCHAR, 
                    fechaRegistro VARCHAR,
                    PRIMARY KEY (numeroHabitacion, fechaLlegada, numeroDocumento
                    ))",
                    @"CREATE TABLE limpieza (
                    numeroHabitacion NUMERIC PRIMARY KEY  NOT NULL , 
                    total VARCHAR, 
                    parcial VARCHAR, 
                    fechaRegistro VARCHAR
                    )",
                    @"CREATE TABLE paises (
                    nombrePais VARCHAR PRIMARY KEY  NOT NULL 
                    )",
                    @"CREATE TABLE producto (
                    idproducto INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , 
                    nombre VARCHAR, 
                    precio VARCHAR, 
                    descripcion VARCHAR, 
                    frigo VARCHAR
                    )",
                    @"CREATE TABLE reservas (
                    numeroHabitacion NUMERIC NOT NULL ,
                    numeroDocumento INTEGER NOT NULL ,
                    fechaLlegada VARCHAR NOT NULL ,
                    fechaSalida VARCHAR,
                    fechaRegistro VARCHAR,
                    activo VARCHAR, 
                    PRIMARY KEY (numeroHabitacion,numeroDocumento,fechaLlegada
                    ))",
                    @"CREATE TABLE reservasCanceladas (
                    numeroHabitacion NUMERIC NOT NULL , 
                    numeroDocumento INTEGER NOT NULL , 
                    fechaLlegada VARCHAR NOT NULL , 
                    fechaSalida VARCHAR, 
                    fechaRegistro VARCHAR, 
                    PRIMARY KEY (numeroHabitacion, numeroDocumento, fechaLlegada
                    ))",
                    @"INSERT INTO datosPersonal(numeroDocumento,nombre,apellido,fechaNacimiento) VALUES ('1234567','administrador','administrador','10/10/2013'
                    )",
                    @"INSERT INTO cuentasPersonal(numeroDocumento,usuario,password,tipoCuenta,activo) VALUES ('1234567','administrador','123456','administrador','si'
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (1,'doble',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (2,'doble',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (13,'doble',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (14,'doble',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (11,'triple',4,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (12,'triple',4,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (4,'simple',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (5,'simple',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (6,'simple',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (7,'simple',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (8,'simple',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (3,'matrimonial',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (9,'matrimonial',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (10,'matrimonial',2,1
                    )",
                    @"INSERT INTO habitacion(numero,tipo,capacidad,state) VALUES (15,'matrimonial',2,1
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (1,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (2,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (13,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (14,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (11,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (12,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (4,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (5,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (6,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (7,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (8,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (3,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (9,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (10,'no','si','11/11/2013'
                    )",
                    @"INSERT INTO limpieza(numeroHabitacion,total,parcial,fechaRegistro) VALUES (15,'no','si','11/11/2013'
                    )"
                };
                //execute the commands, to create the DB's tables.
                foreach (string cmd in commands)
                    using (var c = conn.CreateCommand())
                {
                    c.CommandText = cmd;
                    c.CommandType = CommandType.Text;
                    conn.Open();
                    c.ExecuteNonQuery();
                    conn.Close();
                }


            }
            return conn;
        }
    }
}
